package com.wxzz.elearing.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wxzz.elearing.user.dto.*;
import com.wxzz.elearing.user.entity.EnterpriseImprove;
import com.wxzz.elearing.user.vo.EnterpriseImproveVo;
import com.wxzz.elearning.common.dto.FeignUserWalletDto;
import com.wxzz.elearning.common.dto.FeignWxUserDto;
import com.wxzz.elearning.common.vo.JgPageVo;
import com.wxzz.elearning.common.vo.ReturnVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 企业改善 服务类
 * </p>
 *
 * @author
 * @since 2021-05-17
 */
public interface    IEnterpriseImproveService extends IService<EnterpriseImprove> {

    /**
     * 发布或修改改善(小程序)
     *
     * @param enterpriseImprove
     * @return
     */
    ReturnVO saveEnterpriseImprove(EnterpriseImprove enterpriseImprove);

    /**
     * 改善列表(小程序/后台)
     * <p>
     * type 0-小程序 1-后台
     *
     * @param enterpriseImproveDto
     * @return
     */
    ReturnVO<JgPageVo<List<EnterpriseImprove>>> listEnterpriseImprove(Integer type, Long enterpriseId, EnterpriseImproveDto enterpriseImproveDto);

    /**
     * 查询改善详情(小程序/后台)
     *
     * @param enterpriseImproveId
     * @return
     */
    ReturnVO<EnterpriseImprove> selectEnterpriseImproveDetail(Long enterpriseImproveId);

    /**
     * 改善审核(小程序)
     *
     * @param enterpriseImproveUpdateDto
     * @return
     */
    ReturnVO wxUpdateEnterpriseImprove(Long wxUserId, EnterpriseImproveUpdateDto enterpriseImproveUpdateDto);

    /**
     * 改善审核(后台)
     *
     * @param enterpriseImproveUpdateDto
     * @return
     */
    ReturnVO updateEnterpriseImprove(EnterpriseImproveUpdateDto enterpriseImproveUpdateDto);

    /**
     * 删除改善
     *
     * @param enterpriseImproveId
     * @return
     */
    ReturnVO deleteEnterpriseImprove(Long enterpriseImproveId);

    /**
     * 查询我的改善
     *
     * @param myEnterpriseImproveDto
     * @return
     */
    ReturnVO listMyEnterpriseImprove(Long wxUserId, MyEnterpriseImproveDto myEnterpriseImproveDto);

    /**
     * 我的改善审核(小程序)
     *
     * @return
     */
    ReturnVO<JgPageVo<List<EnterpriseImprove>>> listMyCheckEnterpriseImprove(Long wxUserId, MyCheckEnterpriseImproveDto myCheckEnterpriseImproveDto);

    /**
     * 展示当前企业改善之星
     *
     * @param enterpriseId
     * @return
     */
    ReturnVO<JgPageVo<List<FeignWxUserDto>>> selectSumByEnterpriseImprove(HttpServletResponse response, Long enterpriseId, SumByEnterpriseImproveDto sumByEnterpriseImproveDto);

    /**
     * 查询改提案(远程调用)
     *
     * @param wxUserId
     * @return
     */
    Integer selectWxUserCenterImprove(Long wxUserId);

    /**
     * 查询当前改善统计
     *
     * @param enterpriseId
     * @return
     */
    ReturnVO<EnterpriseImproveVo> selectEnterpriseImproveVo(Long enterpriseId);

}
